#

| Chapter 25 Showing What's in a File |

## 25.11 crush: A cat that Skips all Blank Lines

Sometimes I have a series of files, or just one file, with lots of blank lines. Some systems have a -s option to cat that causes it to compress adjacent blank lines into one. If that option isn't available, you can use crush. The crush script skips all lines that are empty or have only blanks and/or TABs. Here it is:

>     #!/bin/sed -f
>     /^[    ]*$/d

The brackets, `[ ]`, have a TAB and a space in them. That file doesn't even use a shell, so it's efficient; the kernel starts sed directly (45.3) and gives it the script itself as the input file expected with the -f option. If your UNIX can't execute files directly with `#!`, type in this version instead:

>     exec sed '/^[    ]*$/d' ${1+"$@"}

It starts a shell, then exec replaces the shell with sed (45.7). The `${1+"$@"}` works around a problem with argument handling (46.7) in some Bourne shells.

- JP

25.10 Squash Extra Blank Lines |  | 25.12 Double Space, Triple Space ...